package ocio.actions;

import java.util.HashSet;
import java.util.Set;
import ocio.beans.Admin;
import ocio.beans.Producto;
import ocio.beans.Proveedor;
import ocio.beans.Usuario;
import ocio.services.AdminService;
import ocio.services.ProveedorService;
import ocio.services.ServiceLocator;
import ocio.services.UsuarioService;

import com.opensymphony.xwork2.ActionSupport;

/**
 * Clase destinataria de petición de información sobre todos los productos 
 * ofrecidos por un proveedor o, en su caso, administrador.
 * asociadas a un producto.
 * @author Esther García Galán
 * @author Rubén Gómez Vales
 * @version 1.0 13/05/2014
 * @see ocio.beans.Proveedor
 * @see ocio.beans.Producto
 * @see ocio.beans.Admin
 */
public class ListarProductosAction extends ActionSupport {

	private static final long serialVersionUID = 1L;
	private int id;		// id del usuario del que hay que listar los productos
	private int rol;
	
	private Set<Producto> listaProductos = new HashSet<Producto>();

	
    /**
	 * Método execute() de la clase ActionSupport de Struts 2. 
	 * Solicita los servicios para recuperar la información de todos los productos
	 * ofrecidos por un proveedor o, en su caso, por un administrador.
	 * @return un string que indica la respuesta de la acción ejecutada sobre la petición del usuario.
	 */
	public String execute(){
	
		String resultado = "fail";
		ServiceLocator serviceLocator = ServiceLocator.getServiceLocator();

		UsuarioService uS = (UsuarioService)serviceLocator.getService("Usuario");
		Usuario usuario = (Usuario)uS.searchById(id);
		rol = usuario.getRol();
		
		if (rol==3){
			ProveedorService proveedorService = (ProveedorService)serviceLocator.getService("Proveedor");		
			Proveedor proveedor = (Proveedor)proveedorService.searchById(id);
			listaProductos = proveedor.getProductos();
			resultado = "success";
		} else if (rol==1) {
			AdminService adminService = (AdminService)serviceLocator.getService("Admin");		
			Admin admin = (Admin)adminService.searchById(id);
			listaProductos = admin.getProductos();
			resultado = "success";
		}
			
		return resultado;
	}


	public int getId() {
		return id;
	}


	public void setId(int id) {
		this.id = id;
	}


	public Set<Producto> getListaProductos() {
		return listaProductos;
	}


	public void setListaProductos(Set<Producto> listaProductos) {
		this.listaProductos = listaProductos;
	}
		
}
